package br.com.werp.regras.contabilidade.controle;

import br.com.werp.regras.geral.FabricaSubSistema;
import br.com.werp.regras.geral.Relatorio;
import br.com.werp.regras.geral.util.JRDataSourcePadrao;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.contabilidade.LancamentoVO;
import br.com.werp.regras.geral.vos.contabilidade.LoteVO;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

import java.text.DecimalFormat;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class DummySubReports {
    public static void main(String[] args) throws Exception {
        //        HashMap parametros = new HashMap();
        //
        //        parametros.put(Relatorio.IMAGE_URI, "/contabilidade/imgJasper/");
        //
        //        Map imagemMap = new HashMap();
        //        imagemMap.put(Relatorio.LOGO, "Logo.gif");
        //
        //        Map subRelatorios = new HashMap();
        //        subRelatorios.put("DummySub", "DummySub");
        //
        //        List linhas = geraListaDummyLoteVO();
        //
        //        Relatorio relatorio = FabricaSubSistema.getRelatorio();
        //
        //        Util.verRelartorio(relatorio.processarRelatorio(new JRDataSourcePadrao(
        //                    linhas) {
        //                public Object getFieldValue(JRField jrField)
        //                    throws JRException {
        //                    LoteVO loteVO = (LoteVO) valorAtual;
        //
        //                    if ("lancamentos".equals(jrField.getName())) {
        //                        return new JRBeanCollectionDataSource(
        //                                loteVO.getLancamentos());
        //                    }
        //
        //                    return super.getFieldValue(jrField);
        //                }
        //            }, "Dummy", Relatorio.TIPO_HTML, parametros,
        //                FabricaSubSistema.getContabilidade(), subRelatorios, imagemMap));
        Set set = new HashSet();
        DecimalFormat format = new DecimalFormat("000000");

        while (set.size() < 100) {
            String val = format.format((int) (1 + (Math.random() * 999999)));

            if (val.startsWith("0")) {
                continue;
            }

            set.add(val);
        }

        for (Iterator iter = set.iterator(); iter.hasNext();) {
            String element = (String) iter.next();
            System.out.println(element);
        }
    }

    private static List geraListaDummyLoteVO() {
        int lotes = geradorInts(5);
        List retorno = new ArrayList();

        for (int i = 0; i < lotes; i++) {
            LoteVO loteVO = new LoteVO();
            loteVO.setLote_id(i);

            int lancamento = geradorInts(7);

            for (int j = 0; j < lancamento; j++) {
                LancamentoVO lancamentoVO = new LancamentoVO();
                lancamentoVO.setLanc_lote(i);
                lancamentoVO.setLanc_id(j);
                loteVO.getLancamentos().add(lancamentoVO);
            }

            retorno.add(loteVO);
        }

        return retorno;
    }

    private static int geradorInts(int ateQuanto) {
        return (int) (1 + (Math.random() * ateQuanto));
    }
}
